package A2015;

import java.util.Scanner;

/*
 X星球居民小区的楼房全是一样的，并且按矩阵样式排列。其楼房的编号为1,2,3...
当排满一行时，从下一行相邻的楼往反方向排号。
比如：当小区排号宽度为6时，开始情形如下：

1  2  3  4  5  6
12 11 10 9  8  7
13 14 15 .....
我们的问题是：已知了两个楼号m和n，需要求出它们之间的最短移动距离（不能斜线方向移动）
输入为3个整数w m n，空格分开，都在1到10000范围内
w为排号宽度，m,n为待计算的楼号。
要求输出一个整数，表示m n 两楼间最短移动距离。
例如：
用户输入：
6 8 2
则，程序应该输出：
4
再例如：
用户输入：
4 7 20
则，程序应该输出：
5
资源约定：
峰值内存消耗（含虚拟机） < 256M
CPU消耗  < 1000ms
 */
public class _8_移动距离 {

	public static void main(String[] args) {
		int w,m,n;
		Scanner sc =new Scanner(System.in);
		w=sc.nextInt();
		m=sc.nextInt();
		n=sc.nextInt();
		int hm=0,hn=0,lm=0,ln=0;
		hm=(m-1)/w;
		hn=(n-1)/w;
		if(hm%2==0) {
			lm=w-(m%w)+1;
		}else {
			lm=(m%w==0)? w: m%w;
		}
		if(hn%2==0) {
			ln=w-(n%w)+1;
		}else {
			ln=(n%w==0)? w: n%w;
		}
		
//		int l=(lm>ln)? lm-ln:ln-lm;
//		int h=(hm>hn)? hm-hn:hn-hm;
//		
//		System.out.println(l+h);
		System.out.println( Math.abs(lm - ln) + Math.abs(hm - hn));
	}

}
